package com.jl.mapper;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jl.model.DamageComponent;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 损坏(更换)零件表 Mapper 接口
 * </p>
 *
 * @author JiangJian
 * @since 2019-03-06
 */
public interface DamageComponentMapper extends BaseMapper<DamageComponent> {

    /**
     * 损坏零件列表
     * 这里的Param中必须使用 ew为名称 这是因为使用了mybatisplus中的内定的参数
     * 且在xml中必须是使用 美元符 $ 来作为占位符
     * @param page
     * @param qw
     * @return
     */
    List<Map<String,Object>> selectDataGrid(Page<Map<String,Object>> page, @Param("ew") QueryWrapper<DamageComponent> qw);

    /**
     * 易损坏零件列表(3次及以上的更换次数)
     * 这里的Param中必须使用 ew为名称 这是因为使用了mybatisplus中的内定的参数
     * 且在xml中必须是使用 美元符 $ 来作为占位符
     * @param page
     * @param qw
     * @return
     */
    List<Map<String,Object>> selectEasyDamageDataGrid(Page<Map<String,Object>> page, @Param("ew") QueryWrapper<DamageComponent> qw);

    /**
     * 设备更换配件列表
     * 这里的Param中必须使用 ew为名称 这是因为使用了mybatisplus中的内定的参数
     * 且在xml中必须是使用 美元符 $ 来作为占位符
     * @param page
     * @param deviceId
     * @return
     */
    List<Map<String,Object>> selectDamageComponentByDeviceId(Page<Map<String,Object>> page, @Param("deviceId") Long deviceId);

    /**
     * 获得某台设备配件的故障平均寿命
     * @param deviceId 设备id
     * @param componentId 配件id
     * @return
     */
    List<Integer> selectDeviceComponentLifeWithComId(@Param("deviceId")Long deviceId,@Param("componentId")Long componentId);


    /***************************统计代码**************************************/

    /**
     * 获取故障次数最多的部位
     * @param type 按周还是按月 1 周 2月
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @return 故障部位信息
     */
    List<Map<String,Object>> selectTopDamageComponentCount(@Param("type") Integer type,@Param("startTime") String startTime,@Param("endTime") String endTime);


}
